进程与线程
进程
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位(注意与基本单位的区分)
进程实现操作系统的并发性和共享性,进程映像由:程序段、相关数据段和PCB构成,其中PCB是进程存在的唯一标志。
进程的特征包括:动态性、并发性、独立性、异步性、结构性
进程的转态和转换
进程有以下五种状态:
- 运行状态
- 就绪状态
- 阻塞(等待)状态
- 创建状态
- 结束状态
五种状态的转化关系如图
进程控制
进程创建
- 为新进程申请PCB
- 为进程分配资源
- 初始化PCB
- 将进程插入到就绪队列
进程的终止
- 检索PCB,读取进程状态
- 若进程处于执行状态,终止该进程的执行
- 终止子进程的执行(若有)
- 释放该进程拥有的全部资源
- 从队列中删除进程PCB
进程的阻塞
- 找到将要阻塞进程的PCB
- 若进程处于运行状态,则保护现场,将其状态转为阻塞状态,停止运行
- 将PCB插入相应事件的等待队列
进程的唤醒
- 找到进程PCB
- 将进程从等待队列移出,置为就绪状态
- PCB插入就绪队列,等待调度
进程切换
- 保存处理机上下文
- 更新PCB
- 将PCB插入相应队列
- 选择另外一个进程,更新PCB
- 更新内存管理的数据结构
- 恢复处理机上下文
进程的组织
进程控制块
PCB常驻内存,是进程实体的一部分,是进程存在的唯一标志。PCB主要包含以下内容- )进程描述信息:PID,UID
- )进程控制和管理信息:进程当前状态、进程优先级
- )资源分配清单
- )处理机相关信息:PWD等
程序段
能被调度到CPU执行的程序代码段数据段
程序加工处理的原始数据或是程序执行时产生的中间或最终结果
进程的通信
- 共享内存:使用PV操作对共享空间进行读/写
- 消息传递:直接通信和间接通信
- 管道通信:连接读进程和写进程,以实现它们之间的通信,管道通信是半双工通信
线程
- 线程概念
线程是轻量级进程,引入目的是为了提高操作系统并发性能。它是程序执行流的最小单元,不拥有系统资源
2. 进程和线程的比较
- 调度:线程是独立调度的基本单位,进程是拥有资源的基本单位,同一进程中,线程的切换不会引起进程调度。
- 拥有资源:进程是拥有资源的基本单位,线程不拥于资源
- 并发性:进程可并发执行,线程也可并发执行
- 系统开销:
- 地址空间和其他资源:进程的地址空间之间相互独立,同一进程的各个线程共享进程资源
- 通信:进程间通信需要同步和互斥手段,线程间通信可以通过直接读写进程数据段
线程的属性
- 线程不拥有系统资源
- 不同线程可以执行相同程序
- 同一进程的线程共享进程资源
- 线程是处理机的调度基本单位
- 线程生命周期会经历阻塞,、就绪、和运行等各种状态
线程实现方式
- 用户级线程:对内核透明
- 内核级线程
多线程模型
- 多对一模型:多个用户级线程映射到一个内核级线程,当一个线程在使用内核服务是被阻塞,整个进程都会被阻塞
- 一对一模型:一个线程的阻塞妨碍另一个线程继续执行
- 多对多模型
处理机调度
调度的概念
- 调度的基本概念
处理机调度是指从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行 - 调度的层级
- 作业调度(高级调度):从外存挑选作业,为其分配内存、IO设备等资源,并建立进程,使进程获得竞争处理机的机会
- 中级调度(内存调度):将处于挂起状态且已具备运行条件的就绪进程,重新调入内存,挂在就绪队列上
- 进程调度(低级调度):按照某种策略从从就绪队列中选择一个进程,为其分配处理机
进程调度方式
- 非剥夺调度方式
- 剥夺调度方式
调度的基本准则
- CPU利用率
- 系统吞吐量:单位时间CPU完成的作业数量
- 周转时间:从作业提交到作业完成所经历的时间
- 等待时间:进程处于等待处理机状态时间之和
- 响应时间:从用户提交请求到系统首次响应所用时间
调度算法
- 先来先服务(FCFS)调度算法
- 短作业优先(SJF)调度算法
- 优先级调度算法
- 高响应比优先调度算法
- 时间片轮转调度算法
- 多级反馈队列调度算法
进程同步
基本概念
临界资源
一次只允许一个进程访问的资源称为临界资源,访问临界资源的那段代码称为临界区同步
同步也称之为直接制约关系,是进程之间的制约关系互斥
互斥也称之为间接制约关系,进程互斥的共享临界资源。
同步机制遵循准则:- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
实现临界区互斥的基本方法
软件实现方法
- 单标志法:设置变量turn,用于指示被允许进入临界区的进程编号
- 双标志法先检查:设置数组flag[i],若值为false表示Pi未进入临界区,否则相反。
- 双标志法后检查:先设置自己的标志为true再检测对方状态标志
- Peterson’s Algorithm:设置flag标志和turn标志
硬件实现方法
- 中断屏蔽方法
- 硬件指令方法
信号量
- 整型信号量
表示资源数目的整型量S - 记录型信号量
代表资源数目的整型信号量value和进程链表L 利用信号量实现同步
1
2
3
4
5
6
7
8
9
10
11
12
13semaphore S=0 //初始化信号量
P1(){
...
x; //语句x
V(S); //告诉P2,语句x已经执行
...
}
P2(){
...
P(S); //检测x是否完成
y; //检查无误,运行y语句
...
}利用信号量实现进程互斥
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15semaphore S =1
P1(){
...
P(S);
进程P1的临界区;
V(S);
...
}
P2{
...
P(S);
进程P2的临界区;
V(S);
...
}
总结:
在互斥问题中,如果某个行为需要用到某种资源,就在那个行为之前P那种资源一次;如果某种行为会提供某种资源,就在那个行为之后V那种资源一次。PV操作紧夹临界区
管程
略